perm filename PRIV.FAI[SS,SYS] blob sn#400466 filedate 1978-12-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	TITLE PRIV TYPE WHAT PRIVILEGES YOU HAVE
C00008 ENDMK
C⊗;
TITLE PRIV TYPE WHAT PRIVILEGES YOU HAVE

A←1
B←2
C←3
D←4
E←5
T←6
TT←7
R←10
S←11
W←12
X←13
Y←14
Z←15
P←17

DEFINE PRIVS <
;LEFT HALF
XLPRIV DAW,200000		;DISK ABSOLUTE WRITE 
XLPRIV PRO,100000		;FILE SYSTEM RENAME PRIV
XLPRIV REA,40000		;FILE SYSTEM READ PRIV
XLPRIV WRT,20000		;FILE SYSTEM WRITE PRIV
XLPRIV AAO,10000		;ACCESS ALIAS AS OWNER
XLPRIV UPG,4000			;SELECT OTHER DPYS WITH UPGIOT
XLPRIV MES,2000			;CAN DO TTYMES ARBITRARILY
XLPRIV DEV,400			;CAN USE DET/ATT DEVICE COMMAND
XLPRIV SSL,100			;CAN SET SERVICE LEVEL RESERVATION TABLE
XLPRIV ACW,40			;CAN DO ABS MODE WRITE USING SETPR2
XLPRIV INF,20			;CAN READ AND WRITE SPECIAL FILE INFO
XLPRIV XGP,2			;THIS IS THE XGP FONT COMPILER
XLPRIV LUP,1			;LOCAL USER PRIVILEGE

;RIGHT HALF
XRPRIV ATT,400000		;ALLOWS ATTACH TO PHANTOMS
XRPRIV LIV,200000		;DEFEATS AUTOLOGOUT, LOOKED FOR BY SPY
XRPRIV DET,100000		;PREFER AUTODETACH TO AUTOLOGOUT
XRPRIV CSP,40			;COMPUTER SCIENCE PERSONNEL
XRPRIV ACT,20			;ACCOUNTING FILES GROUP
XRPRIV DEC,10			;DEC PROPRIETARY SOFTWARE FILES GROUP
XRPRIV SCY,4			;SECRETARY GROUP
XRPRIV SYS,2			;SYSTEMS PROGRAMMERS GROUP
XRPRIV MAS,1			;[1,YOURSELF] GROUP (MUST BE A RH PRIV FOR DSKSER)
>

DEFINE XLPRIV ! (NAME,BIT) <
NAME!PRV←←BIT
	BIT,,'NAME'
>
DEFINE XRPRIV (NAME,BIT) <>

LHPRVS:	PRIVS
NLHPRV←←.-LHPRVS

DEFINE XLPRIV (NAME,BIT) <>
DEFINE XRPRIV ! (NAME,BIT) <
NAME!PRV←←BIT
	BIT,,'NAME'
>

RHPRVS:	PRIVS
NRHPRV←←.-RHPRVS

GO:	RESET
	MOVE P,[-100,,PDL-1]
	RESCAN B
RESL1:	SOJL B,RESLX
	INCHRW A
	CAIE A,";"
	JRST RESL1
	SETZB C,D
RESL2:	SOJL B,RESLX
	INCHRW A
	CAIL A,"0"
	CAILE A,"9"
	JRST RESL3
	IMULI C,=10
	ADDI C,-"0"(A)
	AOJA D,RESL2

RESL3:	SKIPN D
RESLX:	PJOB C,
	MOVEM C,JOB#
	CLRBFI
	OUTSTR [ASCIZ /
Passive privileges = /]
	MOVEI R,0		;ACCUMULATE UNKNOWN PRIVS
	MOVSI A,1
	HRR A,JOB
	GETPRV A,
	JUMPE A,NOPASS
PASSLP:	JFFO A,PASSL1
	JRST NOPAS1
PASSL1:	MOVSI C,400000
	MOVN B,B
	LSH C,(B)		;GENERATE THE BIT
	ANDCAM C,A		;TURN IT OFF IN A
	PUSHJ P,PRNBIT
	CAIA
	JRST PASSLP
	SKIPE A
	OUTCHR [" "]
	JRST PASSLP

NOPASS:	OUTCHR ["0"]
NOPAS1:	JUMPE R,NOPAS2		;JUMP IF NO UNKNOWN PRIVS
	OUTSTR [ASCIZ /; Unknown=/]
	MOVE B,R
	PUSHJ P,OCTHLF
NOPAS2:	OUTSTR [ASCIZ /
Active privileges = /]
	MOVEI R,0
	HRRZ A,JOB
	GETPRV A,
	JUMPE A,NOACTV
ACTVLP:	JFFO A,ACTVL1
	JRST NOACT1
ACTVL1:	MOVSI C,400000
	MOVN B,B
	LSH C,(B)		;GENERATE THE BIT
	ANDCAM C,A		;TURN IT OFF IN A
	PUSHJ P,PRNBIT
	CAIA
	JRST ACTVLP
	SKIPE A
	OUTCHR [" "]
	JRST ACTVLP

NOACTV:	OUTCHR ["0"]
NOACT1:	JUMPE R,NOACT2		;JUMP IF NO UNKNOWN PRIVS
	OUTSTR [ASCIZ /; Unknown=/]
	MOVE B,R
	PUSHJ P,OCTHLF
NOACT2:	OUTSTR [ASCIZ /
/]
	EXIT

PRNBIT:	HLLZ B,C		;LEFT HALF BITS
	HRLZ C,C		;RIGHT HALF BITS
	JUMPE B,PRNBTR		;JUMP IF NOT A LH BIT
	MOVSI C,-NLHPRV
PRNLB1:	TDNN B,LHPRVS(C)
	AOBJN C,PRNLB1
	JUMPGE C,PRNLB2
	HRRZ T,LHPRVS(C)	;GET NAME OF PRIV
	JRST OUTSIX

PRNLB2:	IOR R,B			;ADD LH PRIV TO UNKNOWN PRIVS
	AOS (P)
	POPJ P,

PRNBTR:	MOVSI B,-NRHPRV
PRNRB1:	TDNN C,RHPRVS(B)
	AOBJN B,PRNRB1
	JUMPGE B,PRNRB2
	HRRZ T,RHPRVS(B)	;GET NAME OF PRIV
	JRST OUTSIX

PRNRB2:	TSO R,C			;ADD RH PRIV TO UNKNOWN PRIVS
	AOS (P)
	POPJ P,

OCTHLF:	PUSH P,B
	HLRZ B,B
	PUSHJ P,OCTOUT
	OUTSTR [ASCIZ /,,/]
	POP P,B
	HRRZ B,B
OCTOUT:	IDIVI B,10
	JUMPE B,OCTOU1
	HRLM C,(P)
	PUSHJ P,OCTOUT
	HLRZ C,(P)
OCTOU1:	ADDI C,"0"
	OUTCHR C
CPOPJ:	POPJ P,

OUTSIX:	JUMPE T,CPOPJ
	MOVEI TT,0
	ROTC T,6
	JUMPE TT,OUTSIX
	ADDI TT,40
	OUTCHR TT
	JRST OUTSIX

PDL:	BLOCK 100
	END GO